package com.admin.system.controller;

import java.util.List;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.admin.base.BaseController;
import com.admin.base.Page;
import com.admin.base.Response;
import com.alibaba.fastjson.JSON;
import com.admin.system.entity.SystemGroup;
import com.admin.system.service.SystemGroupService;
import org.apache.commons.codec.digest.DigestUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;

import com.admin.system.entity.SystemUser;
import com.admin.system.service.SystemUserService;
import com.admin.system.vo.query.SystemUserQuery;

@Controller
@RequestMapping(value = "/system/user")
public class SystemUserController extends BaseController {
    @Autowired
    SystemUserService systemUserService;
    @Autowired
    SystemGroupService systemGroupService;

    /**
     * 列表页面
     */
    @RequestMapping(value = "/list")
    public ModelAndView list(HttpServletRequest request, HttpServletResponse response, ModelAndView mav) {
        mav.setViewName("system/systemUser/list");
        List<SystemGroup> list = systemGroupService.getGroupTree();
        Object zNodes = JSON.toJSON(list);
        mav.addObject("zNodes", zNodes);
        return mav;
    }

    /**
     * 分页查询数据
     */
    @RequestMapping(value = "/paging")
    @ResponseBody
    public Response paging(HttpServletRequest request, HttpServletResponse response, SystemUserQuery query) {
        Page<SystemUser> page = systemUserService.paging(query);
        return Response.ok(page);
    }

    /**
     * 新增页面
     */
    @RequestMapping(value = "/toAdd")
    public ModelAndView toAdd(HttpServletRequest request, HttpServletResponse response, ModelAndView mav) {
        mav.setViewName("system/systemUser/add");
        return mav;
    }

    /**
     * 保存数据
     */
    @RequestMapping(value = "/add")
    @ResponseBody
    public Response add(HttpServletRequest request, HttpServletResponse response, SystemUser systemUser) {
        SystemUser loginUser = getLoginUser();
        systemUser.setCreateBy(loginUser.getId());
        systemUser.setPassword(DigestUtils.md5Hex(systemUser.getName() + systemUser.getPassword()));
        systemUserService.add(systemUser);
        return Response.ok();
    }

    /**
     * 输出数据
     */
    @RequestMapping(value = "/delete")
    @ResponseBody
    public Response delete(HttpServletRequest request, HttpServletResponse response, Integer[] id) {
        systemUserService.delete(id);
        return Response.ok();
    }

    /**
     * 编辑页面
     */
    @RequestMapping(value = "/toEdit")
    public ModelAndView toEdit(HttpServletRequest request, HttpServletResponse response, Integer id, ModelAndView mav) {
        SystemUser systemUser = systemUserService.queryById(id);
        mav.addObject(systemUser);
        mav.setViewName("system/systemUser/edit");
        return mav;
    }

    /**
     * 详情页面
     */
    @RequestMapping(value = "/detail")
    public ModelAndView detail(HttpServletRequest request, HttpServletResponse response, Integer id, ModelAndView mav) {
        SystemUser systemUser = systemUserService.queryById(id);
        mav.addObject(systemUser);
        mav.setViewName("system/systemUser/detail");
        return mav;
    }

    /**
     * 更新数据
     */
    @RequestMapping(value = "/update")
    @ResponseBody
    public Response update(HttpServletRequest request, HttpServletResponse response, SystemUser systemUser) {
        systemUserService.update(systemUser);
        return Response.ok();
    }

    @RequestMapping(value = "/updateStatus")
    @ResponseBody
    public Response updateStatus(HttpServletRequest request, HttpServletResponse response, SystemUser systemUser) {
        systemUserService.updateStatus(systemUser);
        return Response.ok();
    }

}
